AWSハイブリッド構成のDNS設計レシピ
ども、大瀧です。
AWSとオンプレミスのハイブリッド構成は、エンタープライズのAWS活用では定番となりつつあります。そんなAWSハイブリッド構成の設計でよく課題に挙がるのが、DNSです。このブログエントリーでは、使えるDNSサービスの種類とその特性をまとめ、いくつかの構成パターンを解説、比較してみます。
AWSハイブリッド構成とは
AWSハイブリッド構成は、AWSでプライベートネットワークを構成するAmazon VPCとオンプレミスのネットワークを相互接続し、両方のサーバーリソースを組み合わせて利用するものです。VPCとオンプレミスとの接続は、プライベート接続として専用線 *1かインターネットVPN *2を利用します。
AWSハイブリッド構成で利用するDNSサービス
DNSサーバーには権威サーバーとキャッシュサーバーの2種類がありますので、それぞれで利用できるサービス毎に並べてみました。[マネージド]というのは、AWSが運用保守込みで提供するサービスを指します。
No. | サービス名 | 権威 | キャッシュ | マネージド | 制限 |
---|---|---|---|---|---|
1 | Amazon Route 53 Public Hosted Zone | ○ | × | ○ | VPCには配置できない |
2 | Amazon Route 53 Private Hosted Zone | ○ | × | ○ | Amazon DNS専用、上位ドメインからの委譲不可、下位ドメインへの委譲不可 |
3 | Amazon DNS | × | ○ | ○ | VPC専用、ルートヒントとフォワーダの編集不可 |
4 | AWS Directory Service Microsoft AD | ○ | ○ | ○ | リモートデスクトップ接続はできないので、別途DNSコンソールなどで別のマシンからアクセス |
5 | AWS Directory Service Simple AD | △ | ○ | ○ | 権威サーバーは自ドメインのコンピュータのレコードのみ、キャッシュサーバーはルートヒントとフォワーダの編集不可 |
6 | EC2のDNSサーバー | ○ | ○ | × | 特記事項なし |
7 | オンプレミスのDNSサーバー | ○ | ○ | × | 特記事項なし |
運用コストを押さえるために積極的にマネージドサービスを選びたいところですが、それぞれ一定の制限事項がありますので権威/キャッシュと配置場所(AWS/オンプレミス)の組み合わせで問題が無いか検討する必要があります。
注意するべき制限を3つ、詳しく説明します。
- Amazon DNS専用 : セットしたVPCのAmazon DNS以外からはアクセスできません。Route 53 Private Hosted Zoneを利用するためには、キャッシュサーバーでAmazon DNSをフォワーダに設定する必要があります。
- VPC専用 : セットしたVPCの外からの問い合わせには回答しません。Direct Connect/VPN経由のオンプレミスネットワークやVPCピア接続経由のVPCも対象です(回答しません)。
- ルートヒントとフォワーダの編集不可 : 内部ルートや条件付きフォワーダ設定が出来ません。ルートサーバーを起点とするインターネットのDNSツリーおよびRoute 53 Private Hosted Zoneのみを扱います。
まずはRoute 53 Public Hosted Zoneを検討すべし
Route 53 Public Hosted Zone(公開ゾーン)に内部向けDNSレコードを登録できないか、まずは検討しましょう。公開ゾーンとすることで構成を最もシンプルにでき、またAWSのマネージドサービスをフル活用することができます。
従来のオンプレミスでのDNS構成は、内部向けと外部向けを分けて考える手法が一般的でしたが、内部向けDNSの情報が本当に秘匿するべき情報であるかを見直すケースが最近多いと感じています。リスクが大きくないと判断できるのであれば、Route 53 Public Hosted Zoneを積極的に活用しましょう。
内部ルートDNSとAWSドメインの名前解決
一方で、元からあるオンプレミスのDNS構成にAWSを追加するケースではインターネットのDNSツリーにアクセスしない内部ルートDNSになっていることがあります。その場合、AWSドメイン(*.<サービス名>.amazonaws.com
)の名前解決が必要かどうかをしっかり精査しましょう。AWSドメインを利用する主な用途を以下に示します。
1. リソースのエンドポイント
AWSが提供するリソースは、IPアドレスでアクセスするものとDNS名でアクセスするものがあります。EC2はインスタンス毎にIPアドレスをユーザーが指定できる *3のに対し、ELBやCloudFrontなど多くのマネージドサービスはIPアドレスが不定のためAWSが割り当てるDNS名を利用します。DNS名を利用するために、AWSドメインの名前解決が必要です。
2. APIのエンドポイント
EC2インスタンスでAWS SDKやAWS CLIを用いてAWSのAPIをコールすることがあります。例えば、「EBSスナップショットによるバックアップを定期的に実行する」、「ELBに登録しているEC2インスタンス一覧を取得してミドルウェアと連携させる」などです。AWS APIのエンドポイントはIPアドレスが不定なので、AWSドメインの名前解決が必要です。
内部ルートDNSでAWSドメインを解決するためには、キャッシュサーバーでインターネットのDNSツリーにアクセスできる他のキャッシュサーバーに対し、フォワード(回送)を構成します。インターネットのDNSツリーにアクセスするキャッシュサーバーは当然インターネットに接続できないといけませんので、AWS(VPC)に構築する場合には、必要に応じてIGWへのルーティングやNAT GatewayなどVPCのネットワーク構成を合わせて検討することになるでしょう。
設計レシピ1 : 全てオンプレミスのリソースを利用する
権威サーバー、キャッシュサーバーをオンプレミスに配置します。オンプレミスのシステムにAWSのリソースを加えるような構成や、オンプレミスからAWSへの移行の初期段階などで採用することがあります。プライベート接続がSPOFになってしまうというリスクがあるので、プライベート接続の冗長化を検討しましょう。
AWSの各インスタンスの名前解決をオンプレミスのキャッシュサーバーに向けるには、/etc/resolv.conf
などホストごとの設定ではなくVPCのDHCPオプションで設定することに注意しましょう。
設計レシピ2 : AWSにキャッシュサーバーを構成する
レシピ1と同じくオンプレミスの権威サーバー、キャッシュサーバーに加え、AWS側にもキャッシュサーバーを追加する構成です。
TTLの間であればキャッシュサーバーがキャッシュを保持するため、プライベート接続のダウンタイムが許容できます。キャッシュサーバーでルートヒントもしくは条件付きフォワーダの設定が必要なので、EC2インスタンスもしくはDirectory Service Microsoft ADを利用します。
設計レシピ3 : EC2 or Directory Service Microsoft ADを利用する
DNS構成のメインをAWSにするパターンです。権威サーバー、キャッシュサーバーをEC2もしくはDirectory Service Microsoft ADで構成します。
Directory Service Simple ADは任意のゾーン/レコードが登録できないので、Active Directoryのみ利用するケースに限られるでしょう。DNSサーバーの冗長性の考え方は、オンプレミスの場合と特に変わりません。EC2でプライマリ/セカンダリサーバーを構成することができますし、Directory Serviceでは最初から2ノードでインスタンスが構成されます。
また、オンプレミスのキャッシュサーバーは必須ではありません。オンプレミスのサーバーからAWSのキャッシュサーバーを直接参照しても構いません。レシピ1と同様プライベート接続がSPOFになることに注意します。
設計レシピ4 : Route 53 Private Hosted Zone + Amazon DNSを利用する
レシピ3と同じくDNS構成のメインをAWSにしつつ、マネージドサービスに倒した構成です *4。
Amazon DNSがVPC専用のため、オンプレミスからのリクエストに応答しません。そこで、EC2またはDirectory Serviceでキャッシュサーバーを構成し、オンプレミスのサーバーはこちらを向くように設定します。EC2キャッシュサーバーでは、Amazon DNSへの回送(フォワード)を設定しましょう。オンプレミスにキャッシュサーバーを構成する場合(下図)も、回送する経路は同様です。
また、この組み合わせでは内部ルートDNSが構成できないので、他のレシピを利用することになります。
設計レシピ5 : オンプレミスとAWSの権威サーバーを併用する
権威サーバーを両方に配置し、権威サーバー間でゾーン委譲を構成します。それぞれでActive Directoryドメインを構成するケースなどが当てはまりますね。AWS側はRoute 53 Private Hosted Zoneがゾーン委譲に対応していないので選択肢から外れ、EC2もしくはDirectory Service Microsoft ADを検討します。
階層関係でないドメインを別々に作る場合は、キャッシュサーバーのフォワード設定で調整しても良いでしょう。プライマリー/セカンダリーサーバーをオンプレミスとAWSでまたいで構成するのもアリです。
まとめ
AWSハイブリッド構成でのDNS設計についてあれこれ紹介しました。オンプレミスのDNSの設計とさほど変わらないのですが、マネージドサービスの制約に気をつけつつ、うまく組み合わせていけると良いですね。
参考URL
- AWS Solutions Architect ブログ: オンプレミスネットワークとAWS間のDNS名前解決をAWS Directory ServiceとAmazon Route 53を使用してセットアップする方法
- AWS Solutions Architect ブログ: オンプレミスネットワークとAWS間のDNS名前解決をAWS Directory ServiceとMicrosoft Active Directoryを使用してセットアップする方法